package com.gzz.common.tools;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;

/**
 * @类说明 【日期时间】工具(对于新日期时间类绝大部分情况直接使用即可,没有必封装方法)
 * @author 高振中
 * @date 2021-03-05 20:20:20
 **/
public class DateUtils {

	public static final DateTimeFormatter FORMAT_ALL = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
	public static final DateTimeFormatter FORMAT_HMS = DateTimeFormatter.ofPattern("HH:mm:ss");
	public static final DateTimeFormatter FORMAT_YMD = DateTimeFormatter.ofPattern("yyyy-MM-dd");

	/**
	 * @说明 (LocalDateTime)-->String(yyyy-MM-dd HH:mm:ss)
	 */
	public static String formmatAll(LocalDateTime time) {
		return FORMAT_ALL.format(time);
	}

	/**
	 * @说明 (LocalDateTime)-->String(yyyy-MM-dd)
	 */
	public static String formmatYmd(LocalDateTime time) {
		return FORMAT_YMD.format(time);
	}

	/**
	 * @说明 (LocalDateTime)-->String(HH:mm:ss)
	 */
	public static String formmatHms(LocalDateTime time) {
		return FORMAT_HMS.format(time);
	}

	/**
	 * @说明 (LocalTime)-->String(HH:mm:ss)
	 */
	public static String formmatHms(LocalTime time) {
		return FORMAT_HMS.format(time);
	}

	/**
	 * @说明 (LocalDate)-->String(yyyy-MM-dd)
	 */
	public static String formmatYmd(LocalDate date) {
		return FORMAT_YMD.format(date);
	}

	/**
	 * @说明 String(yyyy-MM-dd HH:mm:ss)-->(LocalDateTime)
	 */
	public static LocalDateTime parse(String dateTime) {
		return LocalDateTime.parse(dateTime, FORMAT_ALL);
	}

	/**
	 * @说明 String(yyyy-MM-dd)-->(LocalDate)
	 */
	public static LocalDate parseYmd(String date) {
		return LocalDate.parse(date, FORMAT_YMD);
	}

	/**
	 * @说明 (LocalDateTime)-->(LocalDate)
	 */
	public static LocalDate toLocalDate(LocalDateTime dateTime) {
		return dateTime.toLocalDate();
	}

	/**
	 * @说明 (LocalDateTime)-->(LocalTime)
	 */
	public static LocalTime toLocalTime(LocalDateTime dateTime) {
		return dateTime.toLocalTime();
	}

	/**
	 * @说明 (LocalDate)-->(LocalDateTime)
	 */
	public static LocalDateTime toLocalDateTime(LocalDate date) {
//		return LocalDateTime.of(date, LocalTime.MIDNIGHT);
		return date.atStartOfDay();
	}
}
